package com.hliushi.event.listener;

import com.hliushi.event.entity.SysLogEvent;
import com.hliushi.event.entity.dto.OptLogDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

/**
 * 事件监听器, 监听日志事件
 *
 * @author llhuang10
 * @date 2021/8/25 9:20
 */
@Slf4j
@Component
public class SysLogListener {

    /**
     * @param event 事件源
     */
    // @Async // 异步处理, 并新起一个线程
    @EventListener(SysLogEvent.class)
    public void saveLog(SysLogEvent event) {
        OptLogDTO sysLog = (OptLogDTO) event.getSource();
        long id = Thread.currentThread().getId();
        // 没有开启 @Async注解的 线程号
        // ==========监听到日志操作事件: OptLogDTO(requestIp=127.0.0.1, type=OPT, userName=admin, description=查询用户信息), 线程id: 24
        // ==========发布事件, 线程id: 24

        // 开启 @Async注解的 线程号
        // ==========发布事件, 线程id: 25
        // ==========监听到日志操作事件: OptLogDTO(requestIp=127.0.0.1, type=OPT, userName=admin, description=查询用户信息), 线程id: 44
        log.info("==========监听到日志操作事件: {}, 线程id: {}", sysLog, id);
        // todo 将日志信息保存到数据库
    }
}
